Datenformate, Datenquellen und REST-API
Ein aufeinander aufbauendes Übungsblatt zur Analyse, Modellierung und Planung von API-orientierten Produktdaten.
Ausgangssituation
Ein kleines Unternehmen möchte eine interne Anwendung entwickeln, die Produktdaten aus verschiedenen Quellen sammelt und über eine REST-API nutzbar macht. Die Daten kommen aus einer CSV-Datei, einer JSON-Datei und später aus einer externen API. Deine Aufgabe ist es, die Daten fachlich und technisch zu analysieren, umzuwandeln und API-orientiert zu denken.
1Datenformate verstehen und vergleichen
Du erhältst folgende Beispieldaten zu Produkten:
CSV
id,name,kategorie,preis,lagerbestand
1,Tastatur,Zubehör,29.99,15
2,Maus,Zubehör,14.99,42
3,Monitor,Hardware,199.99,7
JSON
[
{
"id": 1,
"name": "Tastatur",
"kategorie": "Zubehör",
"preis": 29.99,
"lagerbestand": 15
},
{
"id": 2,
"name": "Maus",
"kategorie": "Zubehör",
"preis": 14.99,
"lagerbestand": 42
}
]
- Beschreibe die strukturellen Unterschiede zwischen CSV und JSON. Gehe dabei auf Lesbarkeit, Verschachtelung, Datentypen und typische Einsatzbereiche ein.
- Erkläre, warum JSON für REST-APIs häufig besser geeignet ist als CSV.
- Ergänze das JSON-Beispiel um ein weiteres Produkt: id: 3, name: Monitor, kategorie: Hardware, preis: 199.99, lagerbestand: 7.
- Überlege: Welche Probleme können entstehen, wenn Preise in einer CSV-Datei als Text statt als Zahl gespeichert werden?
2Datenquellen erkennen und bewerten
Das Unternehmen nutzt verschiedene Datenquellen:
- produktdaten.csv
- kunden.json
- externe Lieferanten-API
- SQL-Datenbank
- manuell gepflegte Excel-Datei
- Ordne jede Datenquelle einer Kategorie zu, zum Beispiel Datei, Datenbank oder Webservice.
- Beschreibe für jede Datenquelle einen Vorteil und einen Nachteil.
- Entscheide, welche Datenquelle sich am besten eignet, wenn Produktdaten regelmäßig aktualisiert werden müssen. Begründe deine Entscheidung.
- Erkläre den Unterschied zwischen einer lokalen Datenquelle und einer entfernten Datenquelle.
3Datenmodell für eine REST-API entwickeln
Die Produktdaten sollen später über eine REST-API bereitgestellt werden. Ein Produkt soll folgende Eigenschaften besitzen:
id
name
beschreibung
kategorie
preis
lagerbestand
aktiv
- Erstelle ein vollständiges JSON-Objekt für ein einzelnes Produkt.
- Erstelle anschließend ein JSON-Array mit mindestens drei Produkten.
- Achte darauf, passende Datentypen zu verwenden: id als Zahl, name als Text, beschreibung als Text, kategorie als Text, preis als Zahl, lagerbestand als Zahl und aktiv als Boolean.
- Erkläre, warum es wichtig ist, bei API-Daten konsistente Feldnamen und Datentypen zu verwenden.
4REST-Endpunkte planen
Die Anwendung soll folgende Funktionen anbieten:
- Alle Produkte anzeigen
- Ein einzelnes Produkt anzeigen
- Neues Produkt anlegen
- Produkt ändern
- Produkt löschen
- Entwirf passende REST-Endpunkte für diese Funktionen, zum Beispiel GET /produkte.
- Ergänze zu jedem Endpunkt die passende HTTP-Methode: GET, POST, PUT oder PATCH, DELETE.
- Beschreibe kurz, was bei jedem Endpunkt passiert.
- Erkläre den Unterschied zwischen PUT und PATCH.
- Ordne mindestens vier sinnvolle HTTP-Statuscodes passenden Situationen zu: 200 OK, 201 Created, 204 No Content, 400 Bad Request, 404 Not Found.
5Mini-Szenario: Datenabruf und Fehlerbehandlung
Ein Client ruft folgenden Endpunkt auf:
GET /produkte/3
Die API soll folgendes Produkt zurückgeben:
{
"id": 3,
"name": "Monitor",
"beschreibung": "24-Zoll Full-HD Monitor",
"kategorie": "Hardware",
"preis": 199.99,
"lagerbestand": 7,
"aktiv": true
}
- Beschreibe, was beim Aufruf GET /produkte/3 technisch und fachlich passiert.
- Formuliere eine mögliche erfolgreiche HTTP-Antwort inklusive Statuscode und JSON-Body.
- Formuliere eine mögliche Fehlerantwort, wenn kein Produkt mit der ID 3 existiert.
- Vergleiche die Fehlermeldungen {"error":"Not Found"} und {"error":"Produkt nicht gefunden","message":"Es existiert kein Produkt mit der ID 3."}. Welche ist benutzerfreundlicher? Begründe deine Entscheidung.
- Zusatzaufgabe: Entwirf eine Antwort für den Fall, dass der Client eine ungültige ID übergibt, zum Beispiel GET /produkte/abc.
Erwartetes Ergebnis nach 90 Minuten
Nach der Bearbeitung solltest du erklären können, wie sich CSV und JSON unterscheiden, welche Arten von Datenquellen es gibt, warum JSON häufig für REST-APIs verwendet wird, wie ein einfaches API-Datenmodell aussieht, wie REST-Endpunkte sinnvoll aufgebaut werden, welche HTTP-Methoden und Statuscodes zu typischen API-Aktionen passen und wie erfolgreiche sowie fehlerhafte API-Antworten gestaltet werden können.